home *** CD-ROM | disk | FTP | other *** search
- From: envbvs@epb2.lbl.gov (Brian V. Smith)
- Newsgroups: comp.sources.x
- Subject: v06i055: xfig 2.0 (part 6/7), Patch5
- Message-ID: <133696@sun.Eng.Sun.COM>
- Date: 30 Mar 90 04:34:58 GMT
- Approved: argv@sun.com
-
- Submitted-by: envbvs@epb2.lbl.gov (Brian V. Smith)
- Posting-number: Volume 6, Issue 55
- Archive-name: xfig2/patch5f
- Patch-To: xfig2: Volume 6, Issue 9-24,34-36
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 6 (of 7)."
- # Contents: f2p.c.diff
- # Wrapped by envbvs@epb2.lbl.gov on Wed Mar 28 09:05:13 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'f2p.c.diff' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'f2p.c.diff'\"
- else
- echo shar: Extracting \"'f2p.c.diff'\" \(44019 characters\)
- sed "s/^X//" >'f2p.c.diff' <<'END_OF_FILE'
- X*** f2p.c.p5 Tue Jan 16 17:21:05 1990
- X--- f2p.c Tue Mar 27 08:23:02 1990
- X***************
- X*** 5,10
- X * January 1985.
- X * 1st revision : October 1985.
- X * 2nd revision : March 1988 - read fig 1.4
- X *
- X * %W% %G%
- X */
- X
- X--- 5,12 -----
- X * January 1985.
- X * 1st revision : October 1985.
- X * 2nd revision : March 1988 - read fig 1.4
- X+ * Support for fonts and point sizes added by daved@physiol.su.oz.au
- X+ * March 1990
- X *
- X * %W% %G%
- X */
- X***************
- X*** 10,15
- X */
- X #include "fig.h"
- X #include "object.h"
- X
- X char Usage[] = "Usage: f2p [ -s font_size ] [ input_file [ output_file ] ]\n";
- X char *from = NULL, *to = NULL;
- X
- X--- 12,19 -----
- X */
- X #include "fig.h"
- X #include "object.h"
- X+ #include "troff_fonts.h"
- X+ #include "psfonts.h"
- X
- X char Usage[] = "Usage: f2p [ -f font_file ] [ input_file [ output_file ] ]\n";
- X char *from = NULL,
- X***************
- X*** 11,20
- X #include "fig.h"
- X #include "object.h"
- X
- X! char Usage[] = "Usage: f2p [ -s font_size ] [ input_file [ output_file ] ]\n";
- X! char *from = NULL, *to = NULL;
- X! FILE *ffp = NULL, *tfp = NULL;
- X! int font_size = 11; /* points */
- X char Err_incomp[] = "Incomplete %s object at line %d.";
- X char Err_mem[] = "Running out of memory.";
- X
- X
- X--- 15,24 -----
- X #include "troff_fonts.h"
- X #include "psfonts.h"
- X
- X! char Usage[] = "Usage: f2p [ -f font_file ] [ input_file [ output_file ] ]\n";
- X! char *from = NULL,
- X! *to = NULL;
- X! FILE *tfp = NULL;
- X char Err_incomp[] = "Incomplete %s object at line %d.";
- X char Err_mem[] = "Running out of memory.";
- X
- X***************
- X*** 18,23
- X char Err_incomp[] = "Incomplete %s object at line %d.";
- X char Err_mem[] = "Running out of memory.";
- X
- X put_msg(format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
- X char *format, *arg1, *arg2, *arg3, *arg4, *arg5, *arg6, *arg7, *arg8;
- X {
- X
- X--- 22,33 -----
- X char Err_incomp[] = "Incomplete %s object at line %d.";
- X char Err_mem[] = "Running out of memory.";
- X
- X+ int line_thickness; /* not for f2ps - arrow.c needs it for fig */
- X+ extern struct _fstruct fontnames[]; /* printer font names */
- X+ int dotps, /* most recent size passed to .ps */
- X+ dotft; /* one more than num of font passed to .ft */
- X+
- X+ /*VARARGS1*/
- X put_msg(format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
- X char *format, *arg1, *arg2, *arg3, *arg4, *arg5, *arg6, *arg7, *arg8;
- X {
- X***************
- X*** 22,28
- X char *format, *arg1, *arg2, *arg3, *arg4, *arg5, *arg6, *arg7, *arg8;
- X {
- X fprintf(stderr, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
- X! }
- X
- X get_args(argc, argv)
- X int argc;
- X
- X--- 32,39 -----
- X char *format, *arg1, *arg2, *arg3, *arg4, *arg5, *arg6, *arg7, *arg8;
- X {
- X fprintf(stderr, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
- X! fputc('\n',stderr);
- X! }
- X
- X get_args(argc, argv)
- X int argc;
- X***************
- X*** 31,46
- X char *a;
- X int first = 1;
- X
- X! while (--argc) {
- X! a = *++argv;
- X! if (*a == '-') {
- X! if (*++a == 's') { /* Font size followed */
- X! if (--argc) {
- X! font_size = atoi(*++argv);
- X! if (font_size <= 0 || font_size > 30) {
- X! fprintf(stderr, Usage);
- X! exit(0);
- X! }
- X }
- X else {
- X fprintf(stderr, Usage);
- X
- X--- 42,61 -----
- X char *a;
- X int first = 1;
- X
- X! while (--argc)
- X! {
- X! a = *++argv;
- X! if (*a == '-')
- X! {
- X! if (*++a == 'f')
- X! {
- X! if (--argc)
- X! font_file = *++argv;
- X! else
- X! {
- X! fprintf(stderr, Usage);
- X! exit(0);
- X! }
- X }
- X else
- X {
- X***************
- X*** 42,50
- X exit(0);
- X }
- X }
- X! else {
- X! fprintf(stderr, Usage);
- X! exit(0);
- X }
- X }
- X else {
- X
- X--- 57,66 -----
- X exit(0);
- X }
- X }
- X! else
- X! {
- X! fprintf(stderr, Usage);
- X! exit(0);
- X }
- X }
- X else if (first)
- X***************
- X*** 46,56
- X fprintf(stderr, Usage);
- X exit(0);
- X }
- X- }
- X- else {
- X- fprintf(stderr, Usage);
- X- exit(0);
- X- }
- X }
- X else if (first) {
- X from = a; /* from file */
- X
- X--- 62,67 -----
- X fprintf(stderr, Usage);
- X exit(0);
- X }
- X }
- X else if (first)
- X {
- X***************
- X*** 52,60
- X exit(0);
- X }
- X }
- X! else if (first) {
- X! from = a; /* from file */
- X! first = 0;
- X }
- X else if (first == 0) {
- X to = a; /* to file */
- X
- X--- 63,72 -----
- X exit(0);
- X }
- X }
- X! else if (first)
- X! {
- X! from = a; /* from file */
- X! first = 0;
- X }
- X else if (first == 0)
- X {
- X***************
- X*** 56,64
- X from = a; /* from file */
- X first = 0;
- X }
- X! else if (first == 0) {
- X! to = a; /* to file */
- X! first = -1;
- X }
- X else
- X fprintf(stderr, Usage);
- X
- X--- 68,77 -----
- X from = a; /* from file */
- X first = 0;
- X }
- X! else if (first == 0)
- X! {
- X! to = a; /* to file */
- X! first = -1;
- X }
- X else
- X fprintf(stderr, Usage);
- X***************
- X*** 60,68
- X to = a; /* to file */
- X first = -1;
- X }
- X! else
- X! fprintf(stderr, Usage);
- X! }
- X }
- X
- X main(argc, argv)
- X
- X--- 73,80 -----
- X to = a; /* to file */
- X first = -1;
- X }
- X! else
- X! fprintf(stderr, Usage);
- X }
- X }
- X
- X***************
- X*** 64,69
- X fprintf(stderr, Usage);
- X }
- X }
- X
- X main(argc, argv)
- X int argc;
- X
- X--- 76,82 -----
- X else
- X fprintf(stderr, Usage);
- X }
- X+ }
- X
- X main(argc, argv)
- X int argc;
- X***************
- X*** 71,77
- X {
- X F_compound objects;
- X int status;
- X- char c;
- X
- X get_args(argc, argv);
- X if (to == NULL)
- X
- X--- 84,89 -----
- X {
- X F_compound objects;
- X int status;
- X
- X get_args(argc, argv);
- X troff_init();
- X***************
- X*** 74,79
- X char c;
- X
- X get_args(argc, argv);
- X if (to == NULL)
- X tfp = stdout;
- X else if ((tfp = fopen(to, "w")) == NULL) {
- X
- X--- 86,92 -----
- X int status;
- X
- X get_args(argc, argv);
- X+ troff_init();
- X if (to == NULL)
- X tfp = stdout;
- X else if ((tfp = fopen(to, "w")) == NULL)
- X***************
- X*** 75,86
- X
- X get_args(argc, argv);
- X if (to == NULL)
- X! tfp = stdout;
- X! else if ((tfp = fopen(to, "w")) == NULL) {
- X! fprintf(stderr, "Couldn't open %s\n", to);
- X! fprintf(stderr, Usage);
- X! exit(0);
- X! }
- X
- X if (from)
- X status = read_fig(from, &objects);
- X
- X--- 88,100 -----
- X get_args(argc, argv);
- X troff_init();
- X if (to == NULL)
- X! tfp = stdout;
- X! else if ((tfp = fopen(to, "w")) == NULL)
- X! {
- X! fprintf(stderr, "Couldn't open %s\n", to);
- X! fprintf(stderr, Usage);
- X! exit(0);
- X! }
- X
- X if (from)
- X status = read_fig(from, &objects);
- X***************
- X*** 83,89
- X }
- X
- X if (from)
- X! status = read_fig(from, &objects);
- X else /* read from stdin */
- X status = readfp_fig(stdin, &objects);
- X
- X
- X--- 97,103 -----
- X }
- X
- X if (from)
- X! status = read_fig(from, &objects);
- X else /* read from stdin */
- X status = readfp_fig(stdin, &objects);
- X
- X***************
- X*** 85,91
- X if (from)
- X status = read_fig(from, &objects);
- X else /* read from stdin */
- X! status = readfp_fig(stdin, &objects);
- X
- X if (status != 0) {
- X if (from) read_fail_message(from, status);
- X
- X--- 99,105 -----
- X if (from)
- X status = read_fig(from, &objects);
- X else /* read from stdin */
- X! status = readfp_fig(stdin, &objects);
- X
- X if (status != 0)
- X {
- X***************
- X*** 87,96
- X else /* read from stdin */
- X status = readfp_fig(stdin, &objects);
- X
- X! if (status != 0) {
- X! if (from) read_fail_message(from, status);
- X! exit(0);
- X! }
- X genpic_objects(&objects);
- X if (tfp != stdout) fclose(tfp);
- X }
- X
- X--- 101,111 -----
- X else /* read from stdin */
- X status = readfp_fig(stdin, &objects);
- X
- X! if (status != 0)
- X! {
- X! if (from) read_fail_message(from, status);
- X! exit(0);
- X! }
- X genpic_objects(&objects);
- X if (tfp != stdout) fclose(tfp);
- X }
- X***************
- X*** 93,99
- X }
- X genpic_objects(&objects);
- X if (tfp != stdout) fclose(tfp);
- X! }
- X
- X #define TOP 10.5 /* top of page is 10.5 inch */
- X static double ppi;
- X
- X--- 108,114 -----
- X }
- X genpic_objects(&objects);
- X if (tfp != stdout) fclose(tfp);
- X! }
- X
- X #define TOP 10.5 /* top of page is 10.5 inch */
- X static double ppi;
- X***************
- X*** 104,110
- X double a;
- X {
- X return((double)(CONV ? TOP-a : a));
- X! }
- X
- X genpic_objects(objects)
- X F_compound *objects;
- X
- X--- 119,125 -----
- X double a;
- X {
- X return((double)(CONV ? TOP-a : a));
- X! }
- X
- X genpic_objects(objects)
- X F_compound *objects;
- X***************
- X*** 117,126
- X F_spline *s;
- X F_text *t;
- X
- X! if (0 == (ppi = (double)objects->nwcorner.x)) {
- X! fprintf(stderr, "Resolution is zero!! default to 80 ppi\n");
- X! ppi = 80.0;
- X! }
- X coord_system = objects->nwcorner.y;
- X if (coord_system != 1 && coord_system != 2) {
- X fprintf(stderr, "Wrong coordinate system; cannot continue\n");
- X
- X--- 132,142 -----
- X F_spline *s;
- X F_text *t;
- X
- X! if (0 == (ppi = (double)objects->nwcorner.x))
- X! {
- X! fprintf(stderr, "Resolution is zero!! default to 80 ppi\n");
- X! ppi = 80.0;
- X! }
- X coord_system = objects->nwcorner.y;
- X if (coord_system != 1 && coord_system != 2)
- X {
- X***************
- X*** 122,131
- X ppi = 80.0;
- X }
- X coord_system = objects->nwcorner.y;
- X! if (coord_system != 1 && coord_system != 2) {
- X! fprintf(stderr, "Wrong coordinate system; cannot continue\n");
- X! return;
- X! }
- X if (coord_system == 2) CONV = 1;
- X
- X fprintf(tfp, ".PS\n"); /* PostScript magic strings */
- X
- X--- 138,148 -----
- X ppi = 80.0;
- X }
- X coord_system = objects->nwcorner.y;
- X! if (coord_system != 1 && coord_system != 2)
- X! {
- X! fprintf(stderr, "Wrong coordinate system; cannot continue\n");
- X! return;
- X! }
- X if (coord_system == 2) CONV = 1;
- X
- X fprintf(tfp, ".PS\n"); /* start of pic macro */
- X***************
- X*** 128,134
- X }
- X if (coord_system == 2) CONV = 1;
- X
- X! fprintf(tfp, ".PS\n"); /* PostScript magic strings */
- X
- X for (a = objects->arcs; a != NULL; a = a->next) genpic_arc(a);
- X for (c = objects->compounds; c != NULL; c = c->next) genpic_compound(c);
- X
- X--- 145,151 -----
- X }
- X if (coord_system == 2) CONV = 1;
- X
- X! fprintf(tfp, ".PS\n"); /* start of pic macro */
- X
- X for (a = objects->arcs; a != NULL; a = a->next) genpic_arc(a);
- X for (c = objects->compounds; c != NULL; c = c->next) genpic_compound(c);
- X***************
- X*** 136,141
- X for (l = objects->lines; l != NULL; l = l->next) genpic_line(l);
- X for (s = objects->splines; s != NULL; s = s->next) genpic_spline(s);
- X for (t = objects->texts; t != NULL; t = t->next) genpic_text(t);
- X fprintf(tfp, ".PE\n");
- X }
- X
- X
- X--- 153,162 -----
- X for (l = objects->lines; l != NULL; l = l->next) genpic_line(l);
- X for (s = objects->splines; s != NULL; s = s->next) genpic_spline(s);
- X for (t = objects->texts; t != NULL; t = t->next) genpic_text(t);
- X+ if(dotps)
- X+ fprintf(tfp, ".ps\n"); /* back to initial point size */
- X+ if(dotft)
- X+ fprintf(tfp, ".ft\n"); /* back to initial font */
- X fprintf(tfp, ".PE\n");
- X }
- X
- X***************
- X*** 137,143
- X for (s = objects->splines; s != NULL; s = s->next) genpic_spline(s);
- X for (t = objects->texts; t != NULL; t = t->next) genpic_text(t);
- X fprintf(tfp, ".PE\n");
- X! }
- X
- X /*
- X The line thickness is, unfortunately, multiple of pixel.
- X
- X--- 158,164 -----
- X if(dotft)
- X fprintf(tfp, ".ft\n"); /* back to initial font */
- X fprintf(tfp, ".PE\n");
- X! }
- X
- X /*
- X ** linewidth can be controlled with pointsize, but this means we have
- X***************
- X*** 140,152
- X }
- X
- X /*
- X! The line thickness is, unfortunately, multiple of pixel.
- X! One pixel thickness is a little too thick on the hard copy
- X! so I scale it with 0.7; i.e., it's a kludge. The best way is
- X! to allow thickness in fraction of pixel.
- X!
- X! Note that the current version of psdit (a ditroff to postcript filter)
- X! won't take the legitimate line thickness command.
- X */
- X set_linewidth(w)
- X int w;
- X
- X--- 161,169 -----
- X }
- X
- X /*
- X! ** linewidth can be controlled with pointsize, but this means we have
- X! ** to be rigorous about using a .ps (null) every time, so a real point size
- X! ** request can revert to previous size
- X */
- X set_linewidth(w)
- X int w;
- X***************
- X*** 151,157
- X set_linewidth(w)
- X int w;
- X {
- X! static int cur_thickness = -1;
- X
- X /*
- X if (w == 0) return;
- X
- X--- 168,176 -----
- X set_linewidth(w)
- X int w;
- X {
- X! if (w == 0 || w*10 == dotps) return;
- X! fprintf(tfp,".ps\n.ps %d\n",dotps = 10*w);
- X! }
- X
- X set_style(s, v)
- X int s;
- X***************
- X*** 153,167
- X {
- X static int cur_thickness = -1;
- X
- X- /*
- X- if (w == 0) return;
- X- if (w != cur_thickness) {
- X- cur_thickness = w;
- X- fprintf(tfp, "\"\\D't %.5fi'\"\n", 0.7 * cur_thickness / ppi);
- X- }
- X- */
- X- }
- X-
- X set_style(s, v)
- X int s;
- X float v;
- X
- X--- 172,177 -----
- X fprintf(tfp,".ps\n.ps %d\n",dotps = 10*w);
- X }
- X
- X set_style(s, v)
- X int s;
- X float v;
- X***************
- X*** 168,179
- X {
- X static float style_val = -1;
- X
- X! if (s == DASH_LINE || s == DOTTED_LINE) {
- X! if (v == style_val) return;
- X! if (v == 0.0) return;
- X! style_val = v;
- X! fprintf(tfp, "dashwid = %.3fi\n", style_val/ppi);
- X! }
- X }
- X
- X genpic_compound(com)
- X
- X--- 178,189 -----
- X {
- X static float style_val = -1;
- X
- X! if (s == DASH_LINE || s == DOTTED_LINE)
- X! {
- X! if (v == style_val) return;
- X! if (v == 0.0) return;
- X! style_val = v;
- X! fprintf(tfp, "dashwid = %.3fi\n", style_val/ppi);
- X }
- X }
- X
- X***************
- X*** 175,180
- X fprintf(tfp, "dashwid = %.3fi\n", style_val/ppi);
- X }
- X }
- X
- X genpic_compound(com)
- X F_compound *com;
- X
- X--- 185,191 -----
- X style_val = v;
- X fprintf(tfp, "dashwid = %.3fi\n", style_val/ppi);
- X }
- X+ }
- X
- X genpic_compound(com)
- X F_compound *com;
- X***************
- X*** 192,198
- X for (l = com->lines; l != NULL; l = l->next) genpic_line(l);
- X for (s = com->splines; s != NULL; s = s->next) genpic_spline(s);
- X for (t = com->texts; t != NULL; t = t->next) genpic_text(t);
- X! }
- X
- X genpic_line(l)
- X F_line *l;
- X
- X--- 203,209 -----
- X for (l = com->lines; l != NULL; l = l->next) genpic_line(l);
- X for (s = com->splines; s != NULL; s = s->next) genpic_spline(s);
- X for (t = com->texts; t != NULL; t = t->next) genpic_text(t);
- X! }
- X
- X genpic_line(l)
- X F_line *l;
- X***************
- X*** 203,213
- X set_style(l->style, l->style_val);
- X p = l->points;
- X q = p->next;
- X! if (q == NULL) { /* A single point line */
- X! fprintf(tfp, "line from %.3f,%.3f to %.3f,%.3f\n",
- X! p->x/ppi, convy(p->y/ppi), p->x/ppi, convy(p->y/ppi));
- X! return;
- X! }
- X if (l->back_arrow)
- X draw_arrow_head(q->x/ppi, convy(q->y/ppi), p->x/ppi,
- X convy(p->y/ppi), l->back_arrow->ht/ppi, l->back_arrow->wid/ppi);
- X
- X--- 214,225 -----
- X set_style(l->style, l->style_val);
- X p = l->points;
- X q = p->next;
- X! if (q == NULL)
- X! { /* A single point line */
- X! fprintf(tfp, "line from %.3f,%.3f to %.3f,%.3f\n",
- X! p->x/ppi, convy(p->y/ppi), p->x/ppi, convy(p->y/ppi));
- X! return;
- X! }
- X if (l->back_arrow)
- X draw_arrow_head(q->x/ppi, convy(q->y/ppi), p->x/ppi,
- X convy(p->y/ppi), l->back_arrow->ht/ppi, l->back_arrow->wid/ppi);
- X***************
- X*** 209,215
- X return;
- X }
- X if (l->back_arrow)
- X! draw_arrow_head(q->x/ppi, convy(q->y/ppi), p->x/ppi,
- X convy(p->y/ppi), l->back_arrow->ht/ppi, l->back_arrow->wid/ppi);
- X if (l->style == DASH_LINE && l->style_val > 0.0)
- X fprintf(tfp, "line dashed from");
- X
- X--- 221,227 -----
- X return;
- X }
- X if (l->back_arrow)
- X! draw_arrow_head(q->x/ppi, convy(q->y/ppi), p->x/ppi,
- X convy(p->y/ppi), l->back_arrow->ht/ppi, l->back_arrow->wid/ppi);
- X if (l->style == DASH_LINE && l->style_val > 0.0)
- X fprintf(tfp, "line dashed from");
- X***************
- X*** 212,218
- X draw_arrow_head(q->x/ppi, convy(q->y/ppi), p->x/ppi,
- X convy(p->y/ppi), l->back_arrow->ht/ppi, l->back_arrow->wid/ppi);
- X if (l->style == DASH_LINE && l->style_val > 0.0)
- X! fprintf(tfp, "line dashed from");
- X else if (l->style == DOTTED_LINE && l->style_val > 0.0)
- X fprintf(tfp, "line dotted from");
- X else
- X
- X--- 224,230 -----
- X draw_arrow_head(q->x/ppi, convy(q->y/ppi), p->x/ppi,
- X convy(p->y/ppi), l->back_arrow->ht/ppi, l->back_arrow->wid/ppi);
- X if (l->style == DASH_LINE && l->style_val > 0.0)
- X! fprintf(tfp, "line dashed from");
- X else if (l->style == DOTTED_LINE && l->style_val > 0.0)
- X fprintf(tfp, "line dotted from");
- X else
- X***************
- X*** 214,220
- X if (l->style == DASH_LINE && l->style_val > 0.0)
- X fprintf(tfp, "line dashed from");
- X else if (l->style == DOTTED_LINE && l->style_val > 0.0)
- X! fprintf(tfp, "line dotted from");
- X else
- X fprintf(tfp, "line from");
- X fprintf(tfp, " %.3f,%.3f to", p->x/ppi, convy(p->y/ppi));
- X
- X--- 226,232 -----
- X if (l->style == DASH_LINE && l->style_val > 0.0)
- X fprintf(tfp, "line dashed from");
- X else if (l->style == DOTTED_LINE && l->style_val > 0.0)
- X! fprintf(tfp, "line dotted from");
- X else
- X fprintf(tfp, "line from");
- X fprintf(tfp, " %.3f,%.3f to", p->x/ppi, convy(p->y/ppi));
- X***************
- X*** 216,222
- X else if (l->style == DOTTED_LINE && l->style_val > 0.0)
- X fprintf(tfp, "line dotted from");
- X else
- X! fprintf(tfp, "line from");
- X fprintf(tfp, " %.3f,%.3f to", p->x/ppi, convy(p->y/ppi));
- X while (q->next != NULL) {
- X p = q;
- X
- X--- 228,234 -----
- X else if (l->style == DOTTED_LINE && l->style_val > 0.0)
- X fprintf(tfp, "line dotted from");
- X else
- X! fprintf(tfp, "line from");
- X fprintf(tfp, " %.3f,%.3f to", p->x/ppi, convy(p->y/ppi));
- X while (q->next != NULL)
- X {
- X***************
- X*** 218,228
- X else
- X fprintf(tfp, "line from");
- X fprintf(tfp, " %.3f,%.3f to", p->x/ppi, convy(p->y/ppi));
- X! while (q->next != NULL) {
- X! p = q;
- X! q = q->next;
- X! fprintf(tfp, " %.3f,%.3f to", p->x/ppi, convy(p->y/ppi));
- X! }
- X fprintf(tfp, " %.3f,%.3f\n", q->x/ppi, convy(q->y/ppi));
- X if (l->for_arrow)
- X draw_arrow_head(p->x/ppi, convy(p->y/ppi), q->x/ppi,
- X
- X--- 230,241 -----
- X else
- X fprintf(tfp, "line from");
- X fprintf(tfp, " %.3f,%.3f to", p->x/ppi, convy(p->y/ppi));
- X! while (q->next != NULL)
- X! {
- X! p = q;
- X! q = q->next;
- X! fprintf(tfp, " %.3f,%.3f to", p->x/ppi, convy(p->y/ppi));
- X! }
- X fprintf(tfp, " %.3f,%.3f\n", q->x/ppi, convy(q->y/ppi));
- X if (l->for_arrow)
- X draw_arrow_head(p->x/ppi, convy(p->y/ppi), q->x/ppi,
- X***************
- X*** 225,231
- X }
- X fprintf(tfp, " %.3f,%.3f\n", q->x/ppi, convy(q->y/ppi));
- X if (l->for_arrow)
- X! draw_arrow_head(p->x/ppi, convy(p->y/ppi), q->x/ppi,
- X convy(q->y/ppi), l->for_arrow->ht/ppi, l->for_arrow->wid/ppi);
- X }
- X
- X
- X--- 238,244 -----
- X }
- X fprintf(tfp, " %.3f,%.3f\n", q->x/ppi, convy(q->y/ppi));
- X if (l->for_arrow)
- X! draw_arrow_head(p->x/ppi, convy(p->y/ppi), q->x/ppi,
- X convy(q->y/ppi), l->for_arrow->ht/ppi, l->for_arrow->wid/ppi);
- X }
- X
- X***************
- X*** 227,233
- X if (l->for_arrow)
- X draw_arrow_head(p->x/ppi, convy(p->y/ppi), q->x/ppi,
- X convy(q->y/ppi), l->for_arrow->ht/ppi, l->for_arrow->wid/ppi);
- X! }
- X
- X genpic_spline(s)
- X F_spline *s;
- X
- X--- 240,246 -----
- X if (l->for_arrow)
- X draw_arrow_head(p->x/ppi, convy(p->y/ppi), q->x/ppi,
- X convy(q->y/ppi), l->for_arrow->ht/ppi, l->for_arrow->wid/ppi);
- X! }
- X
- X genpic_spline(s)
- X F_spline *s;
- X***************
- X*** 232,237
- X genpic_spline(s)
- X F_spline *s;
- X {
- X if (int_spline(s))
- X genpic_itp_spline(s);
- X else
- X
- X--- 245,251 -----
- X genpic_spline(s)
- X F_spline *s;
- X {
- X+ set_linewidth(s->thickness);
- X if (int_spline(s))
- X genpic_itp_spline(s);
- X else
- X***************
- X*** 233,239
- X F_spline *s;
- X {
- X if (int_spline(s))
- X! genpic_itp_spline(s);
- X else
- X genpic_ctl_spline(s);
- X }
- X
- X--- 247,253 -----
- X {
- X set_linewidth(s->thickness);
- X if (int_spline(s))
- X! genpic_itp_spline(s);
- X else
- X genpic_ctl_spline(s);
- X }
- X***************
- X*** 235,242
- X if (int_spline(s))
- X genpic_itp_spline(s);
- X else
- X! genpic_ctl_spline(s);
- X! }
- X
- X genpic_ctl_spline(s)
- X F_spline *s;
- X
- X--- 249,256 -----
- X if (int_spline(s))
- X genpic_itp_spline(s);
- X else
- X! genpic_ctl_spline(s);
- X! }
- X
- X genpic_ctl_spline(s)
- X F_spline *s;
- X***************
- X*** 242,248
- X F_spline *s;
- X {
- X if (closed_spline(s))
- X! genpic_closed_spline(s);
- X else
- X genpic_open_spline(s);
- X }
- X
- X--- 256,262 -----
- X F_spline *s;
- X {
- X if (closed_spline(s))
- X! genpic_closed_spline(s);
- X else
- X genpic_open_spline(s);
- X }
- X***************
- X*** 244,251
- X if (closed_spline(s))
- X genpic_closed_spline(s);
- X else
- X! genpic_open_spline(s);
- X! }
- X
- X genpic_open_spline(s)
- X F_spline *s;
- X
- X--- 258,265 -----
- X if (closed_spline(s))
- X genpic_closed_spline(s);
- X else
- X! genpic_open_spline(s);
- X! }
- X
- X genpic_open_spline(s)
- X F_spline *s;
- X***************
- X*** 254,260
- X F_point *p, *q;
- X
- X p = s->points;
- X! x1 = p->x/ppi; y1 = convy(p->y/ppi);
- X p = p->next;
- X x2 = p->x/ppi; y2 = convy(p->y/ppi);
- X
- X
- X--- 268,275 -----
- X F_point *p, *q;
- X
- X p = s->points;
- X! x1 = p->x/ppi;
- X! y1 = convy(p->y/ppi);
- X p = p->next;
- X x2 = p->x/ppi;
- X y2 = convy(p->y/ppi);
- X***************
- X*** 256,262
- X p = s->points;
- X x1 = p->x/ppi; y1 = convy(p->y/ppi);
- X p = p->next;
- X! x2 = p->x/ppi; y2 = convy(p->y/ppi);
- X
- X if (s->back_arrow)
- X draw_arrow_head(x2, y2, x1, y1,
- X
- X--- 271,278 -----
- X x1 = p->x/ppi;
- X y1 = convy(p->y/ppi);
- X p = p->next;
- X! x2 = p->x/ppi;
- X! y2 = convy(p->y/ppi);
- X
- X if (s->back_arrow)
- X draw_arrow_head(x2, y2, x1, y1,
- X***************
- X*** 259,265
- X x2 = p->x/ppi; y2 = convy(p->y/ppi);
- X
- X if (s->back_arrow)
- X! draw_arrow_head(x2, y2, x1, y1,
- X s->back_arrow->ht/ppi, s->back_arrow->wid/ppi);
- X
- X /* Pic's spline supports only solid line style */
- X
- X--- 275,281 -----
- X y2 = convy(p->y/ppi);
- X
- X if (s->back_arrow)
- X! draw_arrow_head(x2, y2, x1, y1,
- X s->back_arrow->ht/ppi, s->back_arrow->wid/ppi);
- X
- X /* Pic's spline supports only solid line style */
- X***************
- X*** 263,269
- X s->back_arrow->ht/ppi, s->back_arrow->wid/ppi);
- X
- X /* Pic's spline supports only solid line style */
- X- /* set_linewidth(s->thickness); */
- X
- X if (p->next == NULL) {
- X fprintf(tfp, "line from %.3f,%.3f to %.3f,%.3f\n", x1, y1, x2, y2);
- X
- X--- 279,284 -----
- X s->back_arrow->ht/ppi, s->back_arrow->wid/ppi);
- X
- X /* Pic's spline supports only solid line style */
- X
- X if (p->next == NULL)
- X {
- X***************
- X*** 265,277
- X /* Pic's spline supports only solid line style */
- X /* set_linewidth(s->thickness); */
- X
- X! if (p->next == NULL) {
- X! fprintf(tfp, "line from %.3f,%.3f to %.3f,%.3f\n", x1, y1, x2, y2);
- X! if (s->for_arrow)
- X! draw_arrow_head(x1, y1, x2, y2, s->for_arrow->ht/ppi,
- X! s->for_arrow->wid/ppi);
- X! return;
- X! }
- X
- X fprintf(tfp, "spline from %.3f,%.3f to %.3f,%.3f", x1, y1, x2, y2);
- X
- X
- X--- 280,293 -----
- X
- X /* Pic's spline supports only solid line style */
- X
- X! if (p->next == NULL)
- X! {
- X! fprintf(tfp, "line from %.3f,%.3f to %.3f,%.3f\n", x1, y1, x2, y2);
- X! if (s->for_arrow)
- X! draw_arrow_head(x1, y1, x2, y2, s->for_arrow->ht/ppi,
- X! s->for_arrow->wid/ppi);
- X! return;
- X! }
- X
- X fprintf(tfp, "spline from %.3f,%.3f to %.3f,%.3f", x1, y1, x2, y2);
- X
- X***************
- X*** 276,282
- X fprintf(tfp, "spline from %.3f,%.3f to %.3f,%.3f", x1, y1, x2, y2);
- X
- X for (q = p->next; q->next != NULL; p = q, q = q->next)
- X! fprintf(tfp, " to %.3f,%.3f", q->x/ppi, convy(q->y/ppi));
- X fprintf(tfp, " to %.3f,%.3f\n", (x2=q->x/ppi), (y2=convy(q->y/ppi)));
- X
- X if (s->for_arrow)
- X
- X--- 292,298 -----
- X fprintf(tfp, "spline from %.3f,%.3f to %.3f,%.3f", x1, y1, x2, y2);
- X
- X for (q = p->next; q->next != NULL; p = q, q = q->next)
- X! fprintf(tfp, " to %.3f,%.3f", q->x/ppi, convy(q->y/ppi));
- X fprintf(tfp, " to %.3f,%.3f\n", (x2=q->x/ppi), (y2=convy(q->y/ppi)));
- X
- X if (s->for_arrow)
- X***************
- X*** 280,286
- X fprintf(tfp, " to %.3f,%.3f\n", (x2=q->x/ppi), (y2=convy(q->y/ppi)));
- X
- X if (s->for_arrow)
- X! draw_arrow_head(p->x/ppi, convy(p->y/ppi), x2, y2,
- X s->for_arrow->ht/ppi, s->for_arrow->wid/ppi);
- X }
- X
- X
- X--- 296,302 -----
- X fprintf(tfp, " to %.3f,%.3f\n", (x2=q->x/ppi), (y2=convy(q->y/ppi)));
- X
- X if (s->for_arrow)
- X! draw_arrow_head(p->x/ppi, convy(p->y/ppi), x2, y2,
- X s->for_arrow->ht/ppi, s->for_arrow->wid/ppi);
- X }
- X
- X***************
- X*** 282,288
- X if (s->for_arrow)
- X draw_arrow_head(p->x/ppi, convy(p->y/ppi), x2, y2,
- X s->for_arrow->ht/ppi, s->for_arrow->wid/ppi);
- X! }
- X
- X genpic_ellipse(e)
- X F_ellipse *e;
- X
- X--- 298,304 -----
- X if (s->for_arrow)
- X draw_arrow_head(p->x/ppi, convy(p->y/ppi), x2, y2,
- X s->for_arrow->ht/ppi, s->for_arrow->wid/ppi);
- X! }
- X
- X genpic_ellipse(e)
- X F_ellipse *e;
- X***************
- X*** 289,297
- X {
- X set_linewidth(e->thickness);
- X fprintf(tfp, "ellipse at %.3f,%.3f wid %.3f ht %.3f\n",
- X! e->center.x/ppi, convy(e->center.y/ppi),
- X! 2 * e->radiuses.x/ppi, 2 * e->radiuses.y/ppi);
- X! }
- X
- X /*
- X Text is display on the screen with the base line starting at
- X
- X--- 305,313 -----
- X {
- X set_linewidth(e->thickness);
- X fprintf(tfp, "ellipse at %.3f,%.3f wid %.3f ht %.3f\n",
- X! e->center.x/ppi, convy(e->center.y/ppi),
- X! 2 * e->radiuses.x/ppi, 2 * e->radiuses.y/ppi);
- X! }
- X
- X /*
- X Text is display on the screen with the base line starting at
- X***************
- X*** 307,313
- X F_text *t;
- X {
- X float y;
- X! int first = 1;
- X
- X if (first) {
- X first = 0;
- X
- X--- 323,330 -----
- X F_text *t;
- X {
- X float y;
- X! static char fontcode[NUMFONTS][3];
- X! int i;
- X
- X if(fontcode[t->font][0] == '\0')
- X for(i=0; *troff_fonts[i].lwname != '\0'; i++)
- X***************
- X*** 309,318
- X float y;
- X int first = 1;
- X
- X! if (first) {
- X! first = 0;
- X! fprintf(tfp, ".ps %d\n", font_size);
- X! }
- X
- X y = convy(t->base_y/ppi) + font_size * HT_OFFSET;
- X fprintf(tfp, "\"%s\" at %.3f,%.3f ljust\n",
- X
- X--- 326,342 -----
- X static char fontcode[NUMFONTS][3];
- X int i;
- X
- X! if(fontcode[t->font][0] == '\0')
- X! for(i=0; *troff_fonts[i].lwname != '\0'; i++)
- X! {
- X! if(strcmp(troff_fonts[i].lwname,fontnames[t->font].psfont)==0)
- X! {
- X! strncpy(&fontcode[t->font][0],troff_fonts[i].trname,2);
- X! break;
- X! }
- X! }
- X! if(fontcode[t->font][0] == '\0')
- X! fontcode[t->font][0] = 'R'; /* default */
- X
- X if(t->size != dotps)
- X fprintf(tfp, ".ps\n.ps %d\n", dotps = t->size);
- X***************
- X*** 314,322
- X fprintf(tfp, ".ps %d\n", font_size);
- X }
- X
- X! y = convy(t->base_y/ppi) + font_size * HT_OFFSET;
- X! fprintf(tfp, "\"%s\" at %.3f,%.3f ljust\n",
- X! t->cstring, t->base_x/ppi, y);
- X }
- X
- X genpic_arc(a)
- X
- X--- 338,349 -----
- X if(fontcode[t->font][0] == '\0')
- X fontcode[t->font][0] = 'R'; /* default */
- X
- X! if(t->size != dotps)
- X! fprintf(tfp, ".ps\n.ps %d\n", dotps = t->size);
- X! if(t->font != dotft - 1)
- X! {
- X! fprintf(tfp, ".ft\n.ft %s\n", &fontcode[t->font][0]);
- X! dotft = t->font + 1;
- X }
- X
- X y = convy(t->base_y/ppi) + t->size * HT_OFFSET;
- X***************
- X*** 319,324
- X t->cstring, t->base_x/ppi, y);
- X }
- X
- X genpic_arc(a)
- X F_arc *a;
- X {
- X
- X--- 346,368 -----
- X dotft = t->font + 1;
- X }
- X
- X+ y = convy(t->base_y/ppi) + t->size * HT_OFFSET;
- X+ fprintf(tfp, "\"%s\" at %.3f,%.3f",
- X+ t->cstring, t->base_x/ppi, y);
- X+
- X+ switch(t->type)
- X+ {
- X+ case T_RIGHT_JUSTIFIED:
- X+ fprintf(tfp, " rjust\n");
- X+ break;
- X+ case T_LEFT_JUSTIFIED:
- X+ fprintf(tfp, " ljust\n");
- X+ break;
- X+ default:
- X+ putc('\n',tfp);
- X+ }
- X+ }
- X+
- X genpic_arc(a)
- X F_arc *a;
- X {
- X***************
- X*** 325,333
- X double x, y;
- X double cx, cy, sx, sy, ex, ey;
- X
- X! cx = a->center.x/ppi; cy = convy(a->center.y/ppi);
- X! sx = a->point[0].x/ppi; sy = convy(a->point[0].y/ppi);
- X! ex = a->point[2].x/ppi; ey = convy(a->point[2].y/ppi);
- X
- X set_linewidth(a->thickness);
- X
- X
- X--- 369,380 -----
- X double x, y;
- X double cx, cy, sx, sy, ex, ey;
- X
- X! cx = a->center.x/ppi;
- X! cy = convy(a->center.y/ppi);
- X! sx = a->point[0].x/ppi;
- X! sy = convy(a->point[0].y/ppi);
- X! ex = a->point[2].x/ppi;
- X! ey = convy(a->point[2].y/ppi);
- X
- X set_linewidth(a->thickness);
- X
- X***************
- X*** 331,346
- X
- X set_linewidth(a->thickness);
- X
- X! if (a->for_arrow) {
- X! arc_tangent(cx, cy, ex, ey, a->direction, &x, &y);
- X! draw_arrow_head(x, y, ex, ey,
- X! a->for_arrow->ht/ppi, a->for_arrow->wid/ppi);
- X! }
- X! if (a->back_arrow) {
- X! arc_tangent(cx, cy, sx, sy, !a->direction, &x, &y);
- X! draw_arrow_head(x, y, sx, sy,
- X! a->back_arrow->ht/ppi, a->back_arrow->wid/ppi);
- X! }
- X
- X if (a->direction)
- X fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f\n",
- X
- X--- 378,395 -----
- X
- X set_linewidth(a->thickness);
- X
- X! if (a->for_arrow)
- X! {
- X! arc_tangent(cx, cy, ex, ey, a->direction, &x, &y);
- X! draw_arrow_head(x, y, ex, ey,
- X! a->for_arrow->ht/ppi, a->for_arrow->wid/ppi);
- X! }
- X! if (a->back_arrow)
- X! {
- X! arc_tangent(cx, cy, sx, sy, !a->direction, &x, &y);
- X! draw_arrow_head(x, y, sx, sy,
- X! a->back_arrow->ht/ppi, a->back_arrow->wid/ppi);
- X! }
- X
- X if (a->direction)
- X fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f\n",
- X***************
- X*** 343,350
- X }
- X
- X if (a->direction)
- X! fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f\n",
- X! cx, cy, sx, sy, ex, ey);
- X else
- X fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f cw\n",
- X cx, cy, sx, sy, ex, ey);
- X
- X--- 392,399 -----
- X }
- X
- X if (a->direction)
- X! fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f\n",
- X! cx, cy, sx, sy, ex, ey);
- X else
- X fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f cw\n",
- X cx, cy, sx, sy, ex, ey);
- X***************
- X*** 346,353
- X fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f\n",
- X cx, cy, sx, sy, ex, ey);
- X else
- X! fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f cw\n",
- X! cx, cy, sx, sy, ex, ey);
- X
- X }
- X
- X
- X--- 395,402 -----
- X fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f\n",
- X cx, cy, sx, sy, ex, ey);
- X else
- X! fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f cw\n",
- X! cx, cy, sx, sy, ex, ey);
- X
- X }
- X
- X***************
- X*** 349,355
- X fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f cw\n",
- X cx, cy, sx, sy, ex, ey);
- X
- X! }
- X
- X arc_tangent(x1, y1, x2, y2, direction, x, y)
- X double x1, y1, x2, y2, *x, *y;
- X
- X--- 398,404 -----
- X fprintf(tfp, "arc at %.3f,%.3f from %.3f,%.3f to %.3f,%.3f cw\n",
- X cx, cy, sx, sy, ex, ey);
- X
- X! }
- X
- X arc_tangent(x1, y1, x2, y2, direction, x, y)
- X double x1, y1, x2, y2, *x, *y;
- X***************
- X*** 355,368
- X double x1, y1, x2, y2, *x, *y;
- X int direction;
- X {
- X! if (direction) { /* counter clockwise */
- X! *x = x2 + (y2 - y1);
- X! *y = y2 - (x2 - x1);
- X! }
- X! else {
- X! *x = x2 - (y2 - y1);
- X! *y = y2 + (x2 - x1);
- X! }
- X }
- X
- X /* draw arrow heading from (x1, y1) to (x2, y2) */
- X
- X--- 404,413 -----
- X double x1, y1, x2, y2, *x, *y;
- X int direction;
- X {
- X! if (direction)
- X! { /* counter clockwise */
- X! *x = x2 + (y2 - y1);
- X! *y = y2 - (x2 - x1);
- X }
- X else
- X {
- X***************
- X*** 364,369
- X *y = y2 + (x2 - x1);
- X }
- X }
- X
- X /* draw arrow heading from (x1, y1) to (x2, y2) */
- X
- X
- X--- 409,420 -----
- X *x = x2 + (y2 - y1);
- X *y = y2 - (x2 - x1);
- X }
- X+ else
- X+ {
- X+ *x = x2 - (y2 - y1);
- X+ *y = y2 + (x2 - x1);
- X+ }
- X+ }
- X
- X /* draw arrow heading from (x1, y1) to (x2, y2) */
- X
- X***************
- X*** 373,379
- X double x, y, xb, yb, dx, dy, l, sina, cosa;
- X double xc, yc, xd, yd;
- X
- X! dx = x2 - x1; dy = y1 - y2;
- X l = sqrt((dx*dx + dy*dy));
- X sina = dy / l; cosa = dx / l;
- X xb = x2*cosa - y2*sina;
- X
- X--- 424,431 -----
- X double x, y, xb, yb, dx, dy, l, sina, cosa;
- X double xc, yc, xd, yd;
- X
- X! dx = x2 - x1;
- X! dy = y1 - y2;
- X l = sqrt((dx*dx + dy*dy));
- X sina = dy / l;
- X cosa = dx / l;
- X***************
- X*** 375,381
- X
- X dx = x2 - x1; dy = y1 - y2;
- X l = sqrt((dx*dx + dy*dy));
- X! sina = dy / l; cosa = dx / l;
- X xb = x2*cosa - y2*sina;
- X yb = x2*sina + y2*cosa;
- X x = xb - arrowht;
- X
- X--- 427,434 -----
- X dx = x2 - x1;
- X dy = y1 - y2;
- X l = sqrt((dx*dx + dy*dy));
- X! sina = dy / l;
- X! cosa = dx / l;
- X xb = x2*cosa - y2*sina;
- X yb = x2*sina + y2*cosa;
- X x = xb - arrowht;
- X***************
- X*** 386,393
- X xd = x*cosa + y*sina;
- X yd = -x*sina + y*cosa;
- X fprintf(tfp, "line from %.3f,%.3f to %.3f,%.3f to %.3f,%.3f\n",
- X! xc, yc, x2, y2, xd, yd);
- X! }
- X
- X #define THRESHOLD .05 /* inch */
- X
- X
- X--- 439,446 -----
- X xd = x*cosa + y*sina;
- X yd = -x*sina + y*cosa;
- X fprintf(tfp, "line from %.3f,%.3f to %.3f,%.3f to %.3f,%.3f\n",
- X! xc, yc, x2, y2, xd, yd);
- X! }
- X
- X #define THRESHOLD .05 /* inch */
- X
- X***************
- X*** 397,404
- X double x1, y1, x4, y4;
- X double xmid, ymid;
- X
- X! x1 = a1; y1 = b1;
- X! x4 = a4; y4 = b4;
- X
- X xmid = (a2 + a3) / 2;
- X ymid = (b2 + b3) / 2;
- X
- X--- 450,459 -----
- X double x1, y1, x4, y4;
- X double xmid, ymid;
- X
- X! x1 = a1;
- X! y1 = b1;
- X! x4 = a4;
- X! y4 = b4;
- X
- X xmid = (a2 + a3) / 2;
- X ymid = (b2 + b3) / 2;
- X***************
- X*** 402,414
- X
- X xmid = (a2 + a3) / 2;
- X ymid = (b2 + b3) / 2;
- X! if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD) {
- X! fprintf(tfp, "\tto %.3f,%.3f\\\n", xmid, ymid);
- X! }
- X! else {
- X! quadratic_spline(x1, y1, ((x1+a2)/2), ((y1+b2)/2),
- X! ((3*a2+a3)/4), ((3*b2+b3)/4), xmid, ymid);
- X! }
- X
- X if (fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) {
- X fprintf(tfp, "\tto %.3f,%.3f\\\n", x4, y4);
- X
- X--- 457,471 -----
- X
- X xmid = (a2 + a3) / 2;
- X ymid = (b2 + b3) / 2;
- X! if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD)
- X! {
- X! fprintf(tfp, "\tto %.3f,%.3f\\\n", xmid, ymid);
- X! }
- X! else
- X! {
- X! quadratic_spline(x1, y1, ((x1+a2)/2), ((y1+b2)/2),
- X! ((3*a2+a3)/4), ((3*b2+b3)/4), xmid, ymid);
- X! }
- X
- X if (fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD)
- X {
- X***************
- X*** 410,422
- X ((3*a2+a3)/4), ((3*b2+b3)/4), xmid, ymid);
- X }
- X
- X! if (fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) {
- X! fprintf(tfp, "\tto %.3f,%.3f\\\n", x4, y4);
- X! }
- X! else {
- X! quadratic_spline(xmid, ymid, ((a2+3*a3)/4), ((b2+3*b3)/4),
- X! ((a3+x4)/2), ((b3+y4)/2), x4, y4);
- X! }
- X }
- X
- X genpic_closed_spline(s)
- X
- X--- 467,475 -----
- X ((3*a2+a3)/4), ((3*b2+b3)/4), xmid, ymid);
- X }
- X
- X! if (fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD)
- X! {
- X! fprintf(tfp, "\tto %.3f,%.3f\\\n", x4, y4);
- X }
- X else
- X {
- X***************
- X*** 418,423
- X ((a3+x4)/2), ((b3+y4)/2), x4, y4);
- X }
- X }
- X
- X genpic_closed_spline(s)
- X F_spline *s;
- X
- X--- 471,482 -----
- X {
- X fprintf(tfp, "\tto %.3f,%.3f\\\n", x4, y4);
- X }
- X+ else
- X+ {
- X+ quadratic_spline(xmid, ymid, ((a2+3*a3)/4), ((b2+3*b3)/4),
- X+ ((a3+x4)/2), ((b3+y4)/2), x4, y4);
- X+ }
- X+ }
- X
- X genpic_closed_spline(s)
- X F_spline *s;
- X***************
- X*** 426,431
- X double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4;
- X double x1, y1, x2, y2;
- X
- X p = s->points;
- X x1 = p->x/ppi; y1 = convy(p->y/ppi);
- X p = p->next;
- X
- X--- 485,491 -----
- X double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4;
- X double x1, y1, x2, y2;
- X
- X+ set_linewidth(s->thickness);
- X p = s->points;
- X x1 = p->x/ppi;
- X y1 = convy(p->y/ppi);
- X***************
- X*** 427,433
- X double x1, y1, x2, y2;
- X
- X p = s->points;
- X! x1 = p->x/ppi; y1 = convy(p->y/ppi);
- X p = p->next;
- X x2 = p->x/ppi; y2 = convy(p->y/ppi);
- X cx1 = (x1 + x2) / 2; cy1 = (y1 + y2) / 2;
- X
- X--- 487,494 -----
- X
- X set_linewidth(s->thickness);
- X p = s->points;
- X! x1 = p->x/ppi;
- X! y1 = convy(p->y/ppi);
- X p = p->next;
- X x2 = p->x/ppi;
- X y2 = convy(p->y/ppi);
- X***************
- X*** 429,437
- X p = s->points;
- X x1 = p->x/ppi; y1 = convy(p->y/ppi);
- X p = p->next;
- X! x2 = p->x/ppi; y2 = convy(p->y/ppi);
- X! cx1 = (x1 + x2) / 2; cy1 = (y1 + y2) / 2;
- X! cx2 = (x1 + 3 * x2) / 4; cy2 = (y1 + 3 * y2) / 4;
- X
- X for (p = p->next; p != NULL; p = p->next) {
- X fprintf(tfp, "line from %.3f,%.3f ", cx1, cy1);
- X
- X--- 490,501 -----
- X x1 = p->x/ppi;
- X y1 = convy(p->y/ppi);
- X p = p->next;
- X! x2 = p->x/ppi;
- X! y2 = convy(p->y/ppi);
- X! cx1 = (x1 + x2) / 2;
- X! cy1 = (y1 + y2) / 2;
- X! cx2 = (x1 + 3 * x2) / 4;
- X! cy2 = (y1 + 3 * y2) / 4;
- X
- X for (p = p->next; p != NULL; p = p->next)
- X {
- X***************
- X*** 433,450
- X cx1 = (x1 + x2) / 2; cy1 = (y1 + y2) / 2;
- X cx2 = (x1 + 3 * x2) / 4; cy2 = (y1 + 3 * y2) / 4;
- X
- X! for (p = p->next; p != NULL; p = p->next) {
- X! fprintf(tfp, "line from %.3f,%.3f ", cx1, cy1);
- X! x1 = x2; y1 = y2;
- X! x2 = p->x/ppi; y2 = convy(p->y/ppi);
- X! cx3 = (3 * x1 + x2) / 4; cy3 = (3 * y1 + y2) / 4;
- X! cx4 = (x1 + x2) / 2; cy4 = (y1 + y2) / 2;
- X! quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4);
- X! fprintf(tfp, "\n");
- X! cx1 = cx4; cy1 = cy4;
- X! cx2 = (x1 + 3 * x2) / 4; cy2 = (y1 + 3 * y2) / 4;
- X! }
- X! x1 = x2; y1 = y2;
- X p = s->points->next;
- X x2 = p->x/ppi; y2 = convy(p->y/ppi);
- X cx3 = (3 * x1 + x2) / 4; cy3 = (3 * y1 + y2) / 4;
- X
- X--- 497,522 -----
- X cx2 = (x1 + 3 * x2) / 4;
- X cy2 = (y1 + 3 * y2) / 4;
- X
- X! for (p = p->next; p != NULL; p = p->next)
- X! {
- X! fprintf(tfp, "line from %.3f,%.3f ", cx1, cy1);
- X! x1 = x2;
- X! y1 = y2;
- X! x2 = p->x/ppi;
- X! y2 = convy(p->y/ppi);
- X! cx3 = (3 * x1 + x2) / 4;
- X! cy3 = (3 * y1 + y2) / 4;
- X! cx4 = (x1 + x2) / 2;
- X! cy4 = (y1 + y2) / 2;
- X! quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4);
- X! fprintf(tfp, "\n");
- X! cx1 = cx4;
- X! cy1 = cy4;
- X! cx2 = (x1 + 3 * x2) / 4;
- X! cy2 = (y1 + 3 * y2) / 4;
- X! }
- X! x1 = x2;
- X! y1 = y2;
- X p = s->points->next;
- X x2 = p->x/ppi;
- X y2 = convy(p->y/ppi);
- X***************
- X*** 446,454
- X }
- X x1 = x2; y1 = y2;
- X p = s->points->next;
- X! x2 = p->x/ppi; y2 = convy(p->y/ppi);
- X! cx3 = (3 * x1 + x2) / 4; cy3 = (3 * y1 + y2) / 4;
- X! cx4 = (x1 + x2) / 2; cy4 = (y1 + y2) / 2;
- X fprintf(tfp, "line from %.3f,%.3f ", cx1, cy1);
- X quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4);
- X fprintf(tfp, "\n");
- X
- X--- 518,529 -----
- X x1 = x2;
- X y1 = y2;
- X p = s->points->next;
- X! x2 = p->x/ppi;
- X! y2 = convy(p->y/ppi);
- X! cx3 = (3 * x1 + x2) / 4;
- X! cy3 = (3 * y1 + y2) / 4;
- X! cx4 = (x1 + x2) / 2;
- X! cy4 = (y1 + y2) / 2;
- X fprintf(tfp, "line from %.3f,%.3f ", cx1, cy1);
- X quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4);
- X fprintf(tfp, "\n");
- X***************
- X*** 452,458
- X fprintf(tfp, "line from %.3f,%.3f ", cx1, cy1);
- X quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4);
- X fprintf(tfp, "\n");
- X! }
- X
- X genpic_itp_spline(s)
- X F_spline *s;
- X
- X--- 527,533 -----
- X fprintf(tfp, "line from %.3f,%.3f ", cx1, cy1);
- X quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4);
- X fprintf(tfp, "\n");
- X! }
- X
- X genpic_itp_spline(s)
- X F_spline *s;
- X***************
- X*** 464,470
- X p1 = s->points;
- X cp1 = s->controls;
- X cp2 = cp1->next;
- X! x2 = p1->x/ppi; y2 = convy(p1->y/ppi);
- X
- X if (s->back_arrow)
- X draw_arrow_head(cp2->lx/ppi, convy(cp2->ly/ppi), x2, y2,
- X
- X--- 539,546 -----
- X p1 = s->points;
- X cp1 = s->controls;
- X cp2 = cp1->next;
- X! x2 = p1->x/ppi;
- X! y2 = convy(p1->y/ppi);
- X
- X if (s->back_arrow)
- X draw_arrow_head(cp2->lx/ppi, convy(cp2->ly/ppi), x2, y2,
- X***************
- X*** 467,473
- X x2 = p1->x/ppi; y2 = convy(p1->y/ppi);
- X
- X if (s->back_arrow)
- X! draw_arrow_head(cp2->lx/ppi, convy(cp2->ly/ppi), x2, y2,
- X s->back_arrow->ht/ppi, s->back_arrow->wid/ppi);
- X
- X for (p2 = p1->next, cp2 = cp1->next; p2 != NULL;
- X
- X--- 543,549 -----
- X y2 = convy(p1->y/ppi);
- X
- X if (s->back_arrow)
- X! draw_arrow_head(cp2->lx/ppi, convy(cp2->ly/ppi), x2, y2,
- X s->back_arrow->ht/ppi, s->back_arrow->wid/ppi);
- X
- X for (p2 = p1->next, cp2 = cp1->next; p2 != NULL;
- X***************
- X*** 471,481
- X s->back_arrow->ht/ppi, s->back_arrow->wid/ppi);
- X
- X for (p2 = p1->next, cp2 = cp1->next; p2 != NULL;
- X! p1 = p2, cp1 = cp2, p2 = p2->next, cp2 = cp2->next) {
- X! fprintf(tfp, "line from %.3f,%.3f ", x2, y2);
- X! x1 = x2; y1 = y2;
- X! x2 = p2->x/ppi; y2 = convy(p2->y/ppi);
- X! bezier_spline(x1, y1, (double)cp1->rx/ppi, convy(cp1->ry/ppi),
- X (double)cp2->lx/ppi, convy(cp2->ly/ppi), x2, y2);
- X fprintf(tfp, "\n");
- X }
- X
- X--- 547,560 -----
- X s->back_arrow->ht/ppi, s->back_arrow->wid/ppi);
- X
- X for (p2 = p1->next, cp2 = cp1->next; p2 != NULL;
- X! p1 = p2, cp1 = cp2, p2 = p2->next, cp2 = cp2->next)
- X! {
- X! fprintf(tfp, "line from %.3f,%.3f ", x2, y2);
- X! x1 = x2;
- X! y1 = y2;
- X! x2 = p2->x/ppi;
- X! y2 = convy(p2->y/ppi);
- X! bezier_spline(x1, y1, (double)cp1->rx/ppi, convy(cp1->ry/ppi),
- X (double)cp2->lx/ppi, convy(cp2->ly/ppi), x2, y2);
- X fprintf(tfp, "\n");
- X }
- X***************
- X*** 477,484
- X x2 = p2->x/ppi; y2 = convy(p2->y/ppi);
- X bezier_spline(x1, y1, (double)cp1->rx/ppi, convy(cp1->ry/ppi),
- X (double)cp2->lx/ppi, convy(cp2->ly/ppi), x2, y2);
- X! fprintf(tfp, "\n");
- X! }
- X
- X if (s->for_arrow)
- X draw_arrow_head((double)cp1->lx/ppi, convy(cp1->ly/ppi), x1, y1,
- X
- X--- 556,563 -----
- X y2 = convy(p2->y/ppi);
- X bezier_spline(x1, y1, (double)cp1->rx/ppi, convy(cp1->ry/ppi),
- X (double)cp2->lx/ppi, convy(cp2->ly/ppi), x2, y2);
- X! fprintf(tfp, "\n");
- X! }
- X
- X if (s->for_arrow)
- X draw_arrow_head((double)cp1->lx/ppi, convy(cp1->ly/ppi), x1, y1,
- X***************
- X*** 481,487
- X }
- X
- X if (s->for_arrow)
- X! draw_arrow_head((double)cp1->lx/ppi, convy(cp1->ly/ppi), x1, y1,
- X (double)s->for_arrow->ht/ppi, (double)s->for_arrow->wid/ppi);
- X }
- X
- X
- X--- 560,566 -----
- X }
- X
- X if (s->for_arrow)
- X! draw_arrow_head((double)cp1->lx/ppi, convy(cp1->ly/ppi), x1, y1,
- X (double)s->for_arrow->ht/ppi, (double)s->for_arrow->wid/ppi);
- X }
- X
- X***************
- X*** 483,489
- X if (s->for_arrow)
- X draw_arrow_head((double)cp1->lx/ppi, convy(cp1->ly/ppi), x1, y1,
- X (double)s->for_arrow->ht/ppi, (double)s->for_arrow->wid/ppi);
- X! }
- X
- X bezier_spline(a0, b0, a1, b1, a2, b2, a3, b3)
- X double a0, b0, a1, b1, a2, b2, a3, b3;
- X
- X--- 562,568 -----
- X if (s->for_arrow)
- X draw_arrow_head((double)cp1->lx/ppi, convy(cp1->ly/ppi), x1, y1,
- X (double)s->for_arrow->ht/ppi, (double)s->for_arrow->wid/ppi);
- X! }
- X
- X bezier_spline(a0, b0, a1, b1, a2, b2, a3, b3)
- X double a0, b0, a1, b1, a2, b2, a3, b3;
- X***************
- X*** 491,508
- X double x0, y0, x3, y3;
- X double sx1, sy1, sx2, sy2, tx, ty, tx1, ty1, tx2, ty2, xmid, ymid;
- X
- X! x0 = a0; y0 = b0;
- X! x3 = a3; y3 = b3;
- X! if (fabs(x0 - x3) < THRESHOLD && fabs(y0 - y3) < THRESHOLD) {
- X! fprintf(tfp, "\tto %.3f,%.3f\\\n", x3, y3);
- X! }
- X! else {
- X! tx = (a1 + a2) / 2; ty = (b1 + b2) / 2;
- X! sx1 = (x0 + a1) / 2; sy1 = (y0 + b1) / 2;
- X! sx2 = (sx1 + tx) / 2; sy2 = (sy1 + ty) / 2;
- X! tx2 = (a2 + x3) / 2; ty2 = (b2 + y3) / 2;
- X! tx1 = (tx2 + tx) / 2; ty1 = (ty2 + ty) / 2;
- X! xmid = (sx2 + tx1) / 2; ymid = (sy2 + ty1) / 2;
- X
- X bezier_spline(x0, y0, sx1, sy1, sx2, sy2, xmid, ymid);
- X bezier_spline(xmid, ymid, tx1, ty1, tx2, ty2, x3, y3);
- X
- X--- 570,597 -----
- X double x0, y0, x3, y3;
- X double sx1, sy1, sx2, sy2, tx, ty, tx1, ty1, tx2, ty2, xmid, ymid;
- X
- X! x0 = a0;
- X! y0 = b0;
- X! x3 = a3;
- X! y3 = b3;
- X! if (fabs(x0 - x3) < THRESHOLD && fabs(y0 - y3) < THRESHOLD)
- X! {
- X! fprintf(tfp, "\tto %.3f,%.3f\\\n", x3, y3);
- X! }
- X! else
- X! {
- X! tx = (a1 + a2) / 2;
- X! ty = (b1 + b2) / 2;
- X! sx1 = (x0 + a1) / 2;
- X! sy1 = (y0 + b1) / 2;
- X! sx2 = (sx1 + tx) / 2;
- X! sy2 = (sy1 + ty) / 2;
- X! tx2 = (a2 + x3) / 2;
- X! ty2 = (b2 + y3) / 2;
- X! tx1 = (tx2 + tx) / 2;
- X! ty1 = (ty2 + ty) / 2;
- X! xmid = (sx2 + tx1) / 2;
- X! ymid = (sy2 + ty1) / 2;
- X
- X bezier_spline(x0, y0, sx1, sy1, sx2, sy2, xmid, ymid);
- X bezier_spline(xmid, ymid, tx1, ty1, tx2, ty2, x3, y3);
- X***************
- X*** 504,510
- X tx1 = (tx2 + tx) / 2; ty1 = (ty2 + ty) / 2;
- X xmid = (sx2 + tx1) / 2; ymid = (sy2 + ty1) / 2;
- X
- X! bezier_spline(x0, y0, sx1, sy1, sx2, sy2, xmid, ymid);
- X! bezier_spline(xmid, ymid, tx1, ty1, tx2, ty2, x3, y3);
- X! }
- X }
- X
- X--- 593,600 -----
- X xmid = (sx2 + tx1) / 2;
- X ymid = (sy2 + ty1) / 2;
- X
- X! bezier_spline(x0, y0, sx1, sy1, sx2, sy2, xmid, ymid);
- X! bezier_spline(xmid, ymid, tx1, ty1, tx2, ty2, x3, y3);
- X }
- X }
- X
- X***************
- X*** 508,510
- X bezier_spline(xmid, ymid, tx1, ty1, tx2, ty2, x3, y3);
- X }
- X }
- X
- X--- 596,600 -----
- X bezier_spline(x0, y0, sx1, sy1, sx2, sy2, xmid, ymid);
- X bezier_spline(xmid, ymid, tx1, ty1, tx2, ty2, x3, y3);
- X }
- X+ }
- X+
- END_OF_FILE
- if test 44019 -ne `wc -c <'f2p.c.diff'`; then
- echo shar: \"'f2p.c.diff'\" unpacked with wrong size!
- fi
- # end of 'f2p.c.diff'
- fi
- echo shar: End of archive 6 \(of 7\).
- cp /dev/null ark6isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 7 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
- dan
- -----------------------------------------------------------
- O'Reilly && Associates
- argv@sun.com / argv@ora.com
- 632 Petaluma Ave, Sebastopol, CA 95472
- 800-338-NUTS, in CA: 800-533-NUTS, FAX 707-829-0104
- Opinions expressed reflect those of the author only.
-